// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.dao;

import java.util.List;
import java.util.Map;

import com.liuxinlong.modules.entity.MocDetail;
import com.liuxinlong.modules.material.dto.MaterialResumeChangeDto;
import com.liuxinlong.modules.material.dto.MaterialStatusImportDto;
import com.baomidou.mybatisplus.service.IService;

/**
 * 变更记录详情dao接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年1月20日
 */
public interface MocDetailDao extends IService<MocDetail> {
    /**
     * 分页查询变更记录详情信息
     *
     * @param queryParam 请求信息
     * @return 变更记录详情信息列表
     */
    List<MocDetail> pageDetailList(Map<String, Object> queryParam);

    /**
     * 查询变更记录详情信息总数
     *
     * @param queryParam 请求信息
     * @return 变更记录详情信息总数
     */
    int getDetailCount(Map<String, Object> queryParam);

    /**
     * 查询变更记录详情信息
     *
     * @param material 物料号
     * @param region   作用域
     * @return 变更记录详情信息列表
     */
    List<MaterialResumeChangeDto> getDetailsByMaterial(String material, String region);

    /**
     * 查询物料状态变更记录
     *
     * @param startTime 起始时间
     * @return 物料状态变更记录
     */
    List<MaterialStatusImportDto> getMaterialStatusChanges(String startTime);

    /**
     * 查询变更记录详情信息
     *
     * @param materialList 物料号
     * @param region   作用域
     * @return 变更记录详情信息列表
     */
    List<MaterialResumeChangeDto> getDetailsByChildMaterial(List<String> materialList, String region);

    /**
     * 根据变更记录id删除变更明细
     *
     * @param recordId 变更记录id
     */
    void deleteByRecordId(String recordId);

    /**
     * 根据物料号查询变更详情列表
     *
     * @param materialList 物料号
     * @return map
     */
    List<MocDetail> getDetailsByMaterials(List<String> materialList);
}
